<?php

/**
 * controler para MrpProOrdController
 *
 * @author hparra
 */

require_once 'class/mrp/ordenes/DP/MrpOrdenProduccionDP.class.php';
require_once 'class/mrp/ordenes/FN/MrpOrdenProduccionFN.class.php';


require_once 'class/mrp/ordenes/DP/MrpOrdenproduccionDetDP.class.php';
require_once 'class/mrp/ordenes/FN/MrpOrdenproduccionDetFN.class.php';

require_once 'class/im/alm/FN/ImAlmacenFN.class.php'; 
require_once('class/mrp/recetas/FN/MrpRecetaFN.class.php');
require_once('class/mrp/recetas/FN/MrpRecetaDetalleFN.class.php');
require_once('class/im/mov/FN/ImStockFN.class.php');

class MrpProOrdController extends ControllerBase
{
    public function contenedor()
    {       
        $o_MrpOrdenProduccionFN = new MrpOrdenProduccionFN();  
        
        if (isset($this->requestVars['txtOrdenId'])) $o_MrpOrdenProduccionFN->setPdoOrdenId($this->requestVars['txtOrdenId']);
        if (isset($this->requestVars['txtClienteId'])) $o_MrpOrdenProduccionFN->setPdoClienteId($this->requestVars['txtClienteId']);

        
        $page      = isset($this->requestVars['page']) ? $this->requestVars['page'] : 1;
        $rp        = isset($this->requestVars['rp']) ? $this->requestVars['rp'] : 10;
        $sortname  = isset($this->requestVars['sortname']) ? $this->requestVars['sortname'] : 'name';
        $sortorder = isset($this->requestVars['sortorder']) ? $this->requestVars['sortorder'] : 'desc';
        
        $o_MrpOrdenProduccionFN->page = $page;
        $o_MrpOrdenProduccionFN->tamPag = $rp;
        $o_MrpOrdenProduccionFN->sortCampos = $sortname;
        $o_MrpOrdenProduccionFN->sortType   = $sortorder;
        
        
        $result=$o_MrpOrdenProduccionFN->selectExtend();
  
        $vars['result']                 = $result;
        $vars['o_MrpOrdenProduccionFN'] = $o_MrpOrdenProduccionFN;
        
        $this->view->show("mrp/produccion/ordenes/contenedor",$vars);   
    }
    
    public function listar(){
      if (!isset($vars)){
			$vars = '';
		}        
        $this->view->show("mrp/produccion/ordenes/listar",$vars);
    }
    
   public function editar(){
       if ($this->requestVars)
       {   
          if (array_key_exists('txtOrdenId', $this->requestVars)) 
          {     
            $o_ImAlmacenFN = new ImAlmacenFN();
            $ao_ImAlmacenBN = $o_ImAlmacenFN->select();
            
            $o_MrpOrdenProduccionFN = new MrpOrdenProduccionFN(); 
            $o_MrpOrdenProduccionDetFN = new MrpOrdenproduccionDetFN();
            
            $o_MrpOrdenProduccionFN->setPdoOrdenId($this->requestVars['txtOrdenId']);
            $o_MrpOrdenProduccionDetFN->setOrdenId($this->requestVars['txtOrdenId']);
            
            $o_rptaH    = $o_MrpOrdenProduccionFN->selectByPK();
            $o_rptaDet  = $o_MrpOrdenProduccionDetFN->selectExtend();
            
            $vars['o_rptaH']         = $o_rptaH;   
            $vars['o_rptaDet']       = $o_rptaDet;  
            $vars['ao_ImAlmacenBN']  = $ao_ImAlmacenBN;        

            $this->view->show("mrp/produccion/ordenes/editar",$vars); 
          }
       }      
    }
    
    public function editarSave()
    {
      try 
      {
        if ($this->requestVars)
        {
            $o_MrpOrdenProduccionDP= new MrpOrdenProduccionDP();   
            if(isset($this->requestVars['txtOrdenId']) AND isset($this->requestVars['clienteId']) AND isset($this->requestVars['txtProductoId']))
            {
            if (isset($this->requestVars['txtOrdenId']))            $o_MrpOrdenProduccionDP->setPdoOrdenId($this->requestVars['txtOrdenId']);  
            if (isset($this->requestVars['clienteId']))             $o_MrpOrdenProduccionDP->setPdoClienteId($this->requestVars['clienteId']);
            if (isset($this->requestVars['txtProductoId']))         $o_MrpOrdenProduccionDP->setPdoProductoId($this->requestVars['txtProductoId']);
            if (isset($this->requestVars['txtDocRef']))             $o_MrpOrdenProduccionDP->setPdoDocRef($this->requestVars['txtDocRef']);            
            if (isset($this->requestVars['txtDocRefCliente']))      $o_MrpOrdenProduccionDP->setPdoDocRefCliente($this->requestVars['txtDocRefCliente']);                        
            if (isset($this->requestVars['txtResponsable']))        $o_MrpOrdenProduccionDP->setPdoResponsable($this->requestVars['txtResponsable']);                        
            if (isset($this->requestVars['txtObservaciones']))      $o_MrpOrdenProduccionDP->setPdoObservaciones($this->requestVars['txtObservaciones']);                                    
            if (isset($this->requestVars['txtCantidad']))           $o_MrpOrdenProduccionDP->setPdoCantidad($this->requestVars['txtCantidad']);
            if (isset($this->requestVars['txtUoM']))                $o_MrpOrdenProduccionDP->setPdoUoM($this->requestVars['txtUoM']);
            if (isset($this->requestVars['txtFechaProduccIni']))    $o_MrpOrdenProduccionDP->setPdoFechaProduccIni($this->requestVars['txtFechaProduccIni']); 
            if (isset($this->requestVars['txtFechaProduccFin']))    $o_MrpOrdenProduccionDP->setPdoFechaProduccFin($this->requestVars['txtFechaProduccFin']); 
            if (isset($this->requestVars['txtFechaReq']))           $o_MrpOrdenProduccionDP->setPdoFechaReq($this->requestVars['txtFechaReq']); 
            if (isset($this->requestVars['txtFechaVcto']))          $o_MrpOrdenProduccionDP->setPdoFechaVcto($this->requestVars['txtFechaVcto']); 
            if (isset($this->requestVars['txtAlmacenId']))          $o_MrpOrdenProduccionDP->setPdoAlmacenId($this->requestVars['txtAlmacenId']);                          
            $o_MrpOrdenProduccionDP->setSysInsAt(date('Y-m-d'));
            $o_MrpOrdenProduccionDP->update();
            
            }
            $a_result['rpta'] = 'true';
            $a_result['msg'] = '';
            $a_result['ordenId'] = $this->requestVars['txtOrdenId'];
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function guardarSave()
    {
      try 
      {
        if ($this->requestVars){
            
            $o_MrpOrdenProduccionDP= new MrpOrdenProduccionDP();   
            if(isset($this->requestVars['clienteId']) AND isset($this->requestVars['txtProductoId']))
            {
                if (isset($this->requestVars['clienteId']))             $o_MrpOrdenProduccionDP->setPdoClienteId($this->requestVars['clienteId']);
                if (isset($this->requestVars['txtProductoId']))         $o_MrpOrdenProduccionDP->setPdoProductoId($this->requestVars['txtProductoId']);
                if (isset($this->requestVars['txtCantidad']))           $o_MrpOrdenProduccionDP->setPdoCantidad($this->requestVars['txtCantidad']);
                if (isset($this->requestVars['txtUoM']))                $o_MrpOrdenProduccionDP->setPdoCantidad($this->requestVars['txtUoM']);
                if (isset($this->requestVars['txtFechaProduccIni']))    $o_MrpOrdenProduccionDP->setPdoFechaProduccIni($this->requestVars['txtFechaProduccIni']); 
                if (isset($this->requestVars['txtFechaProduccFin']))    $o_MrpOrdenProduccionDP->setPdoFechaProduccFin($this->requestVars['txtFechaProduccFin']); 
                if (isset($this->requestVars['txtFechaReq']))           $o_MrpOrdenProduccionDP->setPdoFechaReq($this->requestVars['txtFechaReq']); 
                if (isset($this->requestVars['txtFechaVcto']))          $o_MrpOrdenProduccionDP->setPdoFechaVcto($this->requestVars['txtFechaVcto']); 
                if (isset($this->requestVars['txtAlmacenId']))          $o_MrpOrdenProduccionDP->setPdoAlmacenId($this->requestVars['txtAlmacenId']);  
                                
                $o_MrpOrdenProduccionDP->setSysInsAt(date('Y-m-d'));
                $o_MrpOrdenProduccionDP->save();
            			
            }
              $a_result['ordenId'] = $o_MrpOrdenProduccionDP->setPdoOrdenId;  
              $a_result['rpta'] = 'true';
              $a_result['msg'] = '';
              
          }
      }catch (Exception $e)
      {
        $a_result['rpta'] = 'false';
        $a_result['msg'] = $e->getMessage().' en '.$e->getFile().' linea '.$e->getLine();        
      }
      
      echo json_encode($a_result);
    
    }
    
    public function nuevo(){
           
        $o_ImAlmacenFN = new ImAlmacenFN();
        $ao_ImAlmacenBN = $o_ImAlmacenFN->select();
        $vars['ao_ImAlmacenBN']                = $ao_ImAlmacenBN;
        $this->view->show("mrp/produccion/ordenes/ordenProduccionNuevo",$vars); 
           
    }
    
    public function cargarProducOP()
    {
      if($this->requestVars['sAlmacenId'] AND $this->requestVars['sProductoId'] AND $this->requestVars['sCantidad'])
      {        
        $o_MrpRecetaFN = new MrpRecetaFN(); 
	    $o_MrpRecetaFN->setRctProductoId($this->requestVars['sProductoId']);
	    $ao_Bean = $o_MrpRecetaFN->select();
	    
	    $o_MrpRecetaFN->setRctRecetaId($ao_Bean[0]->getRctRecetaId());
	    $o_rptaH = $o_MrpRecetaFN->selectReceta_CabeceraDetalle();
            if(is_array($o_rptaH->get_oDetalleRecetaBean())){
		$correlaTivo=1;
		foreach ($o_rptaH->get_oDetalleRecetaBean() as $key => $obj){
		    $_InsumoCant = 0;
		    $_StockDispo = 0;
		    //$_InsumoCant = $this->requestVars['sCantidad'] * $obj->getRcdInsumoCant()/$o_rptaH->getRctProductoCant();
                    $_InsumoCant = $this->requestVars['sCantidad'] * $obj->getRcdInsumoCant();
                    $a_Datos['InsumoCant'][] = $_InsumoCant;						
                    //$o_rptaH->getRctProductoCant();                        
                    $a_Datos['InsumoId'][]  = $obj->getRcdInsumoId();
                    $a_Datos['InsumoDes'][] = $obj->get_oDetalleItemBean()->getDescripcion();
    					
                    $o_Stock = new ImStockFN();
                    $o_Stock->setAlmId($this->requestVars['sAlmacenId']);
                    $o_Stock->setArtId($obj->getRcdInsumoId());
                    $o_StockDatos =   $o_Stock->selectByPK();
                    if ($o_StockDatos){
    			$a_Datos['StockDispo'][]  =$o_StockDatos->getCantDsipon();
    			//$_StockDispo = $o_StockDatos->getCantDsipon();
                    }else{
                        $a_Datos['StockDispo'][]  ='';
    			//$_StockDispo = 0;
                    }
                    //$_StockDispo = 10;
                    //$a_Datos['StockDispo'][] = $correlaTivo;
                    $correlaTivo++;
                    // habilitar opcion para transferir o generar otras ordenes de produccion.
                    /*
                    if ($_InsumoCant > $_StockDispo){
                        $o_MrpReceta_FN = new MrpRecetaFN(); 
                        $o_MrpReceta_FN->setRctProductoId($obj->getRcdInsumoId());
                        $ao_RctaBean = $o_MrpReceta_FN->select();
                        if (isset($ao_RctaBean) AND is_array($ao_RctaBean)){
                           $a_Datos['cargarStockId'][] = 'OP';
                           $a_Datos['cargarStockDesc'][] = 'Ord Produc..';
                        }else{
                           $a_Datos['cargarStock'][] = 'TR' ;
                           $a_Datos['cargarStockDesc'][] = 'Transferen..';
                        }
                    }else{
		        $a_Datos['cargarStock'][] = '';
		        $a_Datos['cargarStockDesc'][] = '';
		    }                     
                    */
		}
	}
	    
	$vars['a_datos'] = $a_Datos;
        /*
	    $o_ImAlmacenFN = new ImAlmacenFN();
        $ao_ImAlmacenBN = $o_ImAlmacenFN->select();
        $vars['ao_ImAlmacenBN']                = $ao_ImAlmacenBN;
        */
        
      }
      $this->view->show("mrp/produccion/ordenes/ordenDet",$vars); 
           
    }
}
?>
